// 封装高阶组件----路由守卫
import { getToken } from "@/utils"
import { Navigate } from 'react-router-dom'

// 核心逻辑：有 token，则正常跳转，无 token，则去登录注册
export default function AuthRoute ({ children }) {
  const token = getToken()
  if (token) {
    return <>{ children }</>  // 就是一个 JSX 语法，用于包裹和渲染组件的子组件或元素。在 AuthRoute 组件中，如果存在 token，则正常渲染 children 中的内容
  } else {
    // replace 是一个可选属性，当设置为 true 时，导航将会替换当前的历史记录条目，他们会直接跳转到 /login，而不是在历史记录中添加一个新的页面。
    return <Navigate to={'/login'} replace /> // 当用户没有 token 时，会使用 Navigate 组件将用户重定向到 /login 路由，以进行登录和注册操作。
  }
}